import type { CustomGuessInstance } from '@/types/components'
import { ref } from 'vue'
// @ts-ignore
import { throttle, debounce } from 'lodash'

export default function () {
  /**获取猜你喜欢子组件的实例对象，并传入子组件实例类型*/
  const guessRef = ref<CustomGuessInstance>()
  /**控制scroll-view组件的下拉刷新状态 */
  let refreshTrigger = ref(false)

  // scroll-view 组件滚动到底部时触发的事件(上拉获取更多数据)
  // 对回调函数进行节流处理 使用lodash插件提供的throttle方法
  const onScrolltolower = throttle(() => {
    // 调用子组件的获取更多方法
    guessRef.value?.getMore()
  }, 1000)

  /** scroll-view 组件的下拉刷新事件(防抖)*/
  const onScrollRefresh = debounce(async () => {
    // 设置正在下拉刷新
    refreshTrigger.value = true
    // 调用猜你喜欢组件的重置数据方法
    await guessRef.value?.resetData()
    // 关闭下拉刷新
    refreshTrigger.value = false
  }, 500)

  // 将数据和方法暴露出去
  return { guessRef, refreshTrigger, onScrolltolower, onScrollRefresh }
}
